import re
p1 = 'r[au]n'
p2 = 'bi[a-z]d'
p3 = 'dog runs to cat'
print(re.search(p1,p3))
print(re.search(p2,p3))
print(re.search(p1,p3)) # p1里面的[]是可以 ran 或者 run 都可以匹配

print(re.search(p2,'dog bird to cat')) #p2 里面 [a-z] a到z都可以匹配

print(re.search(r'r\dn','run r4n')) #\d 表示数字
print(re.search(r'r\Dn','run r4n')) #\D 表示不是数字的字符串
print(re.search(r'r\sn','run r\tn')) #\s 表示空白符
print(re.search(r'r\Sn','run r\tn')) #\s 表示不是空白符的字符串
print(re.search(r'r.n','r-n to me')) # . 是除了\n其他都可以
print(re.search(r'run?','run')) # ? 括号里可能会有 也可能不会有
'''
\w 表示字母数字和 _
\W 相反
\b 空白字符 只能一个位置
\B 不管字符串前后有几个都是可以匹配到的
^ 表示句首
$ 表示句尾
flags = re.M 就是多行匹配 是里面的一个参数

* 匹配多次，有多个重复的字符串  0次或者多次
print(re.search(r"ab*","a"))
print(re.search(r"ab*","abbbbbbb"))

+ 匹配多次，有多个重复的字符串  1次或者多次  出现1次匹配不到
print(re.search(r"ab+","a"))
print(re.search(r"ab+","abbbbbbb"))

{2，10} 匹配多次，有多个重复的字符串  这里是出现2次或者10次
print(re.search(r"ab{2,10}","a"))
print(re.search(r"ab{2,10}","abbbbbbb"))








'''